package com.example.beiwang;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;

import android.os.Bundle;
import android.view.View;


//首页
public class RecordActivity extends AppCompatActivity implements RecordListFragment.Callbacks {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_record);
        //获取fragment管理器，对fragment进行操作
        FragmentManager fm = getSupportFragmentManager();//Alt+回车快捷键可以跳出快速创建的代码
        //获取首页fragment的容器
        Fragment fragment = fm.findFragmentById(R.id.fragment_container_list);
        if (fragment == null) {
            fragment = new RecordListFragment();
            /**
             * fragment事务被用来添加、移除、附加、分离或替换fragment队列中的fragment。
             * 这是使用 fragment动态组装和重新组装用户界面的关键。
             * */
            fm.beginTransaction()
                    /**
                     * 将fragment_container定义在activity_record.xml中，是为了:
                     * 1、告诉FragmentManager,fragment视图应该出现在activity视图的什么位置
                     * 2、唯一标识fragmentManager队列中的fragment
                     * 如果需要想该activity添加多个fragment，通常就需要分别为每个fragment创建具有不同id的容器
                     * */
                    .add(R.id.fragment_container_list, fragment)
                    .commit();
        }
        //先获取activit_record布局中，是否有fragment_container_detail
        View view = findViewById(R.id.fragment_container_detail);
        //如果有，说明是平板布局，进行fragment的加载
        if (view != null) {
            //获取详情页的fragment容器
            Fragment fragment2 = fm.findFragmentById(R.id.fragment_container_detail);
            if (fragment2 == null) {
                fragment2 = new RecordFragment();
                /**
                 * fragment事务被用来添加、移除、附加、分离或替换fragment队列中的fragment。
                 * 这是使用 fragment动态组装和重新组装用户界面的关键。
                 * */
                fm.beginTransaction()
                        /**
                         * 将fragment_container定义在activity_record.xml中，是为了:
                         * 1、告诉FragmentManager,fragment视图应该出现在activity视图的什么位置
                         * 2、唯一标识fragmentManager队列中的fragment
                         * 如果需要想该activity添加多个fragment，通常就需要分别为每个fragment创建具有不同id的容器
                         * */
                        .add(R.id.fragment_container_list, fragment2)
                        .commit();
            }
        }
    }

    @Override
    public void onNewRecord() {
        FragmentManager fm = getSupportFragmentManager();
        fm.beginTransaction()
                .replace(R.id.fragment_container_list, new RecordFragment())
                .addToBackStack(null)//模拟返回栈
                .commit();
    }

    @Override
    public void onRecordSelect(int recordId) {
        FragmentManager fm = getSupportFragmentManager();
        RecordFragment recordFragment = RecordFragment.newInstance(recordId);
        fm.beginTransaction()
                .replace(R.id.fragment_container_list, recordFragment)
                .addToBackStack(null)//模拟返回栈
                .commit();
    }
}